package controllers;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import model.Unit;

import com.et.mvc.JsonView;

public class UnitController extends ApplicationController {
	/**
	 * 返回全部单位资料
	 */
	public JsonView getUnits(int rows, int page) throws Exception {
		String cond = "1=1";
		List<Object> tmpArgs = new ArrayList<Object>();
		Object[] args = tmpArgs.toArray();
		long total = Unit.count(Unit.class, cond, args); // 查询单位总数
		List<Unit> units = Unit.findAll(Unit.class,cond, args,"id", rows, (page - 1) * rows); // 查询单位的一页资料

		// 构造JSON用的数据结构并返回JSON视图
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("total", total);
		result.put("rows", units);
		return new JsonView(result);
	}

	public JsonView getUnit(int id) throws Exception {
		Unit unit = Unit.find(Unit.class, id);
		return new JsonView(unit);
	}

	/**
	 * 查询单位，分页查询
	 * 
	 * @param rows
	 *            分页大小
	 * @param page
	 *            页号
	 * @param unit_name
	 *            查询参数-按单位名称查询
	 * @return 返回单位的分页数据资料
	 * @throws Exception
	 */
	public JsonView getUnits(int rows, int page, String unit_name)
			throws Exception {

		String cond = "1=1";
		List<Object> tmpArgs = new ArrayList<Object>();
		if (unit_name != null && !unit_name.equals("")) { // 单位名称参数非空时增加名称查询条件
			cond += " and unit_name like ?";
			tmpArgs.add("%" + unit_name + "%");
		}
		Object[] args = tmpArgs.toArray();

		long total = Unit.count(Unit.class, cond, args); // 查询单位总数
		List<Unit> units = Unit.findAll(Unit.class, cond, args, "id", rows,
				(page - 1) * rows); // 查询单位的一页资料

		// 构造JSON用的数据结构并返回JSON视图
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("total", total);
		result.put("rows", units);
		return new JsonView(result);
	}

	/**
	 * 保存新建单位
	 */
	public JsonView save(Unit unit) throws Exception {
		unit.save();
		JsonView view = new JsonView("success:true");
		view.setContentType("text/html;charset=utf-8");
		return view;
	}

	/**
	 * 保存修改的单位
	 */
	public JsonView update(int id) throws Exception {
		Unit unit = Unit.find(Unit.class, id);
		updateModel(unit);
		unit.save();
		JsonView view = new JsonView("success:true");
		view.setContentType("text/html;charset=utf-8");
		return view;
	}

	/**
	 * 删除指定的单位
	 */
	public JsonView destroy(int id) throws Exception {
		Unit unit = Unit.find(Unit.class, id);
		unit.destroy();
		JsonView view = new JsonView("success:true");
		view.setContentType("text/html;charset=utf-8");
		return view;
	}
}
